package br.edu.universo.si.projeto2.infojob.server.persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import br.edu.universo.si.projeto2.infojob.client.bean.BeanCurriculoConhecimentos;
import br.edu.universo.si.projeto2.infojob.server.Database;

/**
 * Classe de persistência de Conhecimento.
 * @author Anizair Lopes
 */
public class PCurriculoConhecimento
{
  /**
   * Busca todos os conhecimentos cadastrados.
   * @author Anizair Lopes
   * @return HashMap<Integer, String>
   * @throws ClassNotFoundException
   * @throws Exception
   */
  public static HashMap<Integer, String> getConhecimentos() throws ClassNotFoundException, Exception {

	try {
	  
	  HashMap<Integer, String> conhecimentos = new HashMap<Integer, String>();
	  
	  Database database = Database.getInstance();
	  Statement stm = database.getStatement();
	  
	  String query = "SELECT * FROM infojob.tb_conhecimentos";
	  
	  ResultSet rs = stm.executeQuery(query);
	  while (rs.next()) {
		int id = rs.getInt("id");
		String conhecimento = rs.getString("conhecimento");
		
		conhecimentos.put(id, conhecimento);
	  }
	  
	  return conhecimentos;
	} catch (Exception e) {
	  throw new Exception(e.getMessage());
	}
  }

  /**
   * ???
   * @author Anizair Lopes
   * @param bcurconhecimento
   * @throws ClassNotFoundException
   * @throws Exception
   */
  public static void salvarCurriculoConhecimento(List<BeanCurriculoConhecimentos> bcurconhecimento) throws ClassNotFoundException, Exception {

	try {
	  
	  Database database = Database.getInstance();
	  String qry = "INSERT INTO infojob.tb_curriculo_conhecimentos(id_curriculo, id_conhecimento) VALUES(?,?);";	 
	  int i = 0;
	  for (Iterator<BeanCurriculoConhecimentos> iterator = bcurconhecimento.iterator(); iterator.hasNext();i++) {
				
		BeanCurriculoConhecimentos beanCurriculoConhecimentos = (BeanCurriculoConhecimentos) iterator.next();
		boolean existenobanco = PCurriculoConhecimento.getCurriculoByConhecimentos(beanCurriculoConhecimentos.getIdCurriculo(),beanCurriculoConhecimentos.getIdConhecimento());
		if (!existenobanco){
			PreparedStatement pstm = database.getPreparedStatement(qry);
			pstm.setInt(1, beanCurriculoConhecimentos.getIdCurriculo());
			pstm.setInt(2, beanCurriculoConhecimentos.getIdConhecimento());		  
			pstm.executeUpdate();
		}
		 	
	}
	
	  
	} catch (Exception e) {
	  throw new Exception(e.getMessage());
	}
  }

  /**
   * ???
   * @author Anizair Lopes.
   * @param idCurriculo
   * @return
   * @throws ClassNotFoundException
   * @throws Exception
   */
  public static List<BeanCurriculoConhecimentos> getCurriculoConhecimento(Integer idCurriculo)throws ClassNotFoundException, Exception{
	List<BeanCurriculoConhecimentos> clcurconhecimento = new ArrayList<BeanCurriculoConhecimentos>();
	try {
	  Database database = Database.getInstance();
	  String qry = "Select * from infojob.tb_curriculo_conhecimentos where id_curriculo = " + idCurriculo;
	  Statement stm = database.getStatement();
	  ResultSet rs =  stm.executeQuery(qry);
	  while(rs.next()){
	     BeanCurriculoConhecimentos beancurriculoconhecimento = new BeanCurriculoConhecimentos();
	     beancurriculoconhecimento.setId(rs.getInt("id"));
	     beancurriculoconhecimento.setIdCurriculo(rs.getInt("id_curriculo"));
	     beancurriculoconhecimento.setIdConhecimento(rs.getInt("id_conhecimento"));
	     clcurconhecimento.add(beancurriculoconhecimento);
	  }	  
	  return clcurconhecimento;
	} catch (Exception e) {
	  throw new Exception(e.getMessage());
	}
	  
  }

  /**
   * ???
   * @author Anizair Lopes
   * @param idCurriculo
   * @param idConhecimento
   * @return
   * @throws ClassNotFoundException
   * @throws Exception
   */
  public static boolean getCurriculoByConhecimentos(int idCurriculo, int idConhecimento)throws ClassNotFoundException, Exception{
		boolean existe = false;
		try {
		  Database database = Database.getInstance();
		  String qry = "Select * from infojob.tb_curriculo_conhecimentos where id_curriculo = ? and id_conhecimento = ?";
		  PreparedStatement pstm = database.getPreparedStatement(qry);
		  pstm.setInt(1, idCurriculo);
		  pstm.setInt(2, idConhecimento);
		  ResultSet rs =  pstm.executeQuery();
		  while(rs.next()){
			  existe = true;
		  }	  
		  return existe;
		} catch (Exception e) {
		  throw new Exception(e.getMessage());
		}		  
	  }
}